﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using SisEagle.View.Web.Base;
using SisEagle.IView.Cadastro;
using System.Data;


namespace SisEagle.View.Web.Cadastro
{
    public partial class Categorias : WebPageBase, ICategoriasView
    {

        #region Singleton
        private SisEagleBO.CategoriasBO _CategoriasBusiness;
        private SisEagleBO.CategoriasBO CategoriasBusiness
        {
            get
            {
                if (_CategoriasBusiness == null)
                    _CategoriasBusiness = new SisEagleBO.CategoriasBO();

                return _CategoriasBusiness;
            }
        }

        #endregion

        #region Page-Load

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            if (!DesignMode)
            {
                inicialize();
            }

        }

        protected void Page_Load(object sender, EventArgs e)
        {
            inicializeComponetes();
            if (!IsPostBack)
            {
                

            }
        }

        #endregion

        #region Internal
        private void inicializeComponetes()
        {
            ListaResultadoView = new DataView();
        }
       
        private void inicialize()
        {
            btnLocalizar.Click += (btnLocalizar_Click);
            gridCategorias.PageIndexChanging += (gridCategorias_PageIndexChanging);
            gridCategorias.RowDataBound += gridCategorias_RowDataBound;
        }
        /// <summary>
        /// Evento de Callback
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void gridCategorias_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridCategorias.PageIndex = e.NewPageIndex;
            gridCategorias.DataSource = BuscarCategorias();
            gridCategorias.DataBind();

        }
        void gridCategorias_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int totalrows = ListaResultado.Tables["Categorias"].Rows.Count;
            AjustaTotalizador(totalrows,null, string.Empty,null,string.Empty, e);
        }

        private DataView BuscarCategorias()
        {


            ListaResultadoView = CategoriasBusiness.FindAll().Tables[0].DefaultView;

            return ListaResultadoView;

        }
        protected void btnLocalizar_Click(object sender, ImageClickEventArgs e)
        {

            CarregaGrid();
        }

        private void CarregaGrid()
        {

            gridCategorias.DataSource = ListaResultado;
            gridCategorias.DataBind();
        }


        #endregion

        #region Binding

        public int CodCategoria
        {

            get
            {
                if (string.IsNullOrEmpty(txtCodigo.Text) || !(UtilsNumber.IsNumber(txtCodigo.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(txtCodigo.Text);

            }
            set
            {
                txtCodigo.Text = value.ToString();
            }
        }

        public string Descricao
        {
            get
            {
                if (string.IsNullOrEmpty(txtDescricao.Text))
                    return string.Empty;

                else
                    return txtDescricao.Text.TrimStart();
            }
            set
            {
                txtDescricao.Text = value;
            }
        }

        public string NomeCategoria
        {
            get
            {
                if (string.IsNullOrEmpty(txtNomeCategoria.Text))
                    return string.Empty;

                else
                    return txtNomeCategoria.Text.TrimStart();
            }

            set
            {
                txtNomeCategoria.Text = value;
            }
        }


        public DataSet ListaResultado
        {
            get
            {

                if (CodCategoria != 0)
                    return CategoriasBusiness.FindBy_CodCategoria(CodCategoria);

                if (!string.IsNullOrEmpty(NomeCategoria))
                    return CategoriasBusiness.FindBy_NomeCategoria(NomeCategoria);

                if (!string.IsNullOrEmpty(Descricao))
                    return CategoriasBusiness.FindBy_Descricao(Descricao);

                else
                    return CategoriasBusiness.FindAll();

            }
            set
            {

                ListaResultado = value;
                CarregaGrid();
            }
        }


        public DataView ListaResultadoView { get; set; }



        #endregion

    }
}


